package cn.gson.springboot.model.mapper.privilegemapper;

import cn.gson.springboot.model.pjos.Dept;
import cn.gson.springboot.model.pjos.Emp;
import cn.gson.springboot.model.pjos.Permissionsset;
import cn.gson.springboot.model.vo.privilegevo.DeptPositionVo;
import cn.gson.springboot.model.vo.privilegevo.DeptVo;
import cn.gson.springboot.model.vo.privilegevo.PositionVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import javax.persistence.criteria.CriteriaBuilder;
import java.util.List;

@Repository
public interface DeptMapper {

 /**
  * 递归查询部门及部门的下级部门
  * @return
  */
    public List<DeptVo> deptTree(Integer did);

    /*根据部门id查询职务*/
    public List<PositionVo> positionTree(int deptId);

    /*所有权限组*/
    public List<Permissionsset> permissionGroup();

   /* 部门拥有的权限*/
    public List<Integer> deptPermissionGroup(Integer deptId);

    /*查询部门拥有的权限组，权限组里拥有的子权限*/
    public  List<Permissionsset> deptMeun(Integer deptId);

    /*职务下拥有的子权限*/
    public List<Integer> positionMeun(Integer postId);

    /* 该部门有多少个在职员工*/
    public Integer countDeptEmp(Integer deptId);

   /* 该职务下有多少在职员工*/
    public Integer countPositionEmp(Integer postId);

    /* 用于查询部门名称是否存在*/
    public Integer findDeptIsNo(String deptName);

    /*用于查询职务下的名称是否存在*/
    public Integer findPositionIsNo(@Param("deptId") Integer deptId, @Param("postName") String postName);

    /** 查询用户是否是一级角色*/
    public DeptPositionVo deptPost(Integer empId);

    /*查询自己所在的部门*/
    public DeptVo oneSelfDept(Integer deptId);

    /**递归查询拥有指定模块的子部门*/
    public List<DeptVo> childrenDept(@Param("psetId") Integer psetId, @Param("fatherDeptId") Integer fatherDeptId);

    /**查询部门下的员工*/
    public List<Emp> selectEmp(Integer deptId);
}
